package com.docmgmt.mvp.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * AI对话实体（v3.0新增）
 *
 * 对话会话管理（类似ChatGPT的conversation）
 * 一个dialog包含多轮Q&A（存储在ai_conversation表）
 *
 * @TableName ai_dialog
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("ai_dialog")
public class AiDialogEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /** 对话UUID（v3.0新增） */
    @TableField("dialog_id")
    private String dialogId;

    /** RAGFlow Session ID（v3.1新增，用于多轮对话） */
    @TableField("ragflow_session_id")
    private String ragflowSessionId;

    /** 用户ID */
    @TableField("user_id")
    private Long userId;

    /** 对话标题（用户可编辑） */
    @TableField("title")
    private String title;

    /** 问答范围类型：global/kb/folder/file（v3.0修改） */
    @TableField("scope_type")
    private String scopeType;

    /** 范围ID（folder或file的ID） */
    @TableField("scope_id")
    private Long scopeId;

    /** 查询的知识库ID列表（JSON格式） */
    @TableField("kb_ids")
    private String kbIds;

    /** 总轮次数 */
    @TableField("total_rounds")
    private Integer totalRounds;

    /** 总token使用量 */
    @TableField("total_tokens_used")
    private Integer totalTokensUsed;

    /** 最后查询时间 */
    @TableField("last_query_time")
    private LocalDateTime lastQueryTime;

    /** 状态：active/archived/deleted */
    @TableField("status")
    private String status;

    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    @TableField(value = "updated_at", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;
}
